package com.lzy.utils.extend;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.green20220302.models.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.aliyun.green20220302.Client;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;

@Component
public class AliTextReviewUtils {

    @Autowired
    private AliyunResource aliyunResource;

    public String reviewTextContent(String content) throws Exception {

//        Config config = new Config();
//        config.setAccessKeyId(aliyunResource.getAccessKeyID());
//        config.setAccessKeySecret(aliyunResource.getAccessKeySecret());
//        //接入区域和地址请根据实际情况修改
//        config.setRegionId("cn-shanghai");
//        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
//        //读取时超时时间，单位毫秒（ms）。
//        config.setReadTimeout(6000);
//        //连接时超时时间，单位毫秒（ms）。
//        config.setConnectTimeout(3000);
//        //设置http代理。
//        //config.setHttpProxy("http://10.10.xx.xx:xxxx");
//        //设置https代理。
//        //config.setHttpsProxy("https://10.10.xx.xx:xxxx");
//        // 注意，此处实例化的client请尽可能重复使用，避免重复建立连接，提升检测性能
//        Client client = new Client(config);
//
//        // 创建RuntimeObject实例并设置运行参数。
//        RuntimeOptions runtime = new RuntimeOptions();
//        runtime.readTimeout = 10000;
//        runtime.connectTimeout = 10000;
//
//        //检测参数构造
//        JSONObject serviceParameters = new JSONObject();
//        serviceParameters.put("content", "input text");
//
//        if (serviceParameters.get("content") == null || serviceParameters.getString("content").trim().length() == 0) {
//            System.out.println("text moderation content is empty");
//            return null;
//        }
//
//        TextModerationRequest textModerationRequest = new TextModerationRequest();
//        /*
//        文本检测service：内容安全控制台文本增强版规则配置的serviceCode，示例：chat_detection
//        */
//        textModerationRequest.setService("service code");
//        textModerationRequest.setServiceParameters(serviceParameters.toJSONString());
//        try {
//            // 调用方法获取检测结果。
//            TextModerationResponse response = client.textModerationWithOptions(textModerationRequest, runtime);
//
//            // 自动路由。
//            if (response != null) {
//                // 服务端错误，区域切换到cn-beijing。
//                if (500 == response.getStatusCode() || (response.getBody() != null && 500 == (response.getBody().getCode()))) {
//                    // 接入区域和地址请根据实际情况修改。
//                    config.setRegionId("cn-beijing");
//                    config.setEndpoint("green-cip.cn-beijing.aliyuncs.com");
//                    client = new Client(config);
//                    response = client.textModerationWithOptions(textModerationRequest, runtime);
//                }
//
//            }
//            // 打印检测结果。
//            if (response != null) {
//                if (response.getStatusCode() == 200) {
//                    TextModerationResponseBody result = response.getBody();
//                    System.out.println(JSON.toJSONString(result));
//                    Integer code = result.getCode();
//                    if (code != null && code == 200) {
//                        TextModerationResponseBody.TextModerationResponseBodyData data = result.getData();
//                        System.out.println("labels = [" + data.getLabels() + "]");
//                        System.out.println("reason = [" + data.getReason() + "]");
//
//                        return result.getMessage();
//                    } else {
//                        System.out.println("text moderation not success. code:" + code);
//                        return null;
//                    }
//                } else {
//                    System.out.println("response not success. status:" + response.getStatusCode());
//                    return null;
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        return null;

        Config config = new Config();
        /**
         * 阿里云账号AccessKey拥有所有API的访问权限，建议您使用RAM用户进行API访问或日常运维。
         * 常见获取环境变量方式：
         * 方式一：
         *     获取RAM用户AccessKey ID：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret：System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         * 方式二：
         *     获取RAM用户AccessKey ID：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_ID");
         *     获取RAM用户AccessKey Secret：System.getProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
         */
        config.setAccessKeyId(aliyunResource.getAccessKeyID());
        config.setAccessKeySecret(aliyunResource.getAccessKeySecret());
        //接入区域和地址请根据实际情况修改
        config.setRegionId("cn-shanghai");
        config.setEndpoint("green-cip.cn-shanghai.aliyuncs.com");
        //读取时超时时间，单位毫秒（ms）。
        config.setReadTimeout(6000);
        //连接时超时时间，单位毫秒（ms）。
        config.setConnectTimeout(3000);
        //设置http代理。
        //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
        //设置https代理。
        //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
        Client client = new Client(config);

        JSONObject serviceParameters = new JSONObject();
        serviceParameters.put("content", "测试文本内容");

        TextModerationPlusRequest textModerationPlusRequest = new TextModerationPlusRequest();
        // 检测类型
        textModerationPlusRequest.setService("llm_query_moderation");
        textModerationPlusRequest.setServiceParameters(serviceParameters.toJSONString());

        try {
            TextModerationPlusResponse response = client.textModerationPlus(textModerationPlusRequest);
            if (response.getStatusCode() == 200) {
                TextModerationPlusResponseBody result = response.getBody();
                System.out.println(JSON.toJSONString(result));
                System.out.println("requestId = " + result.getRequestId());
                System.out.println("code = " + result.getCode());
                System.out.println("msg = " + result.getMessage());
                Integer code = result.getCode();
                if (200 == code) {
                    TextModerationPlusResponseBody.TextModerationPlusResponseBodyData data = result.getData();
                    System.out.println(JSON.toJSONString(data, true));
                    return result.getData().getRiskLevel();
                } else {
                    System.out.println("text moderation not success. code:" + code);
                    return null;
                }
            } else {
                System.out.println("response not success. status:" + response.getStatusCode());
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


        return null;
    }

}